/*
 * 设计模式 - 代理模式
 * 目的: 帮你完成你没有完成的内容
 * 通过代理完成对业务的访问,包一层方便任意功能扩展
 */

RealAction real = new RealAction();
ProxyAction proxy = new ProxyAction(real);
proxy.Do();

interface IAction
{
    void Do();
}

class RealAction : IAction
{
    public void Do()
    {
        Console.WriteLine("我做了一件事情");
    }
}


/// <summary>
/// 代理器
/// </summary>
class ProxyAction : IAction
{
    private readonly IAction _action;

    public ProxyAction(IAction action)
    {
        _action = action;
    }
    public void Do()
    {
        Console.WriteLine("我做这件事情之前");
        _action.Do();
        Console.WriteLine("我做这件事情之后");
    }
}
